# TODO 作业:
#  问题2:编程实现
#  (2)、通过字符串函数，分别输出学生的:
#  姓、名、出生年、月份、及今年多少岁，名字长度。
#  (3)、名字中是否含有”小“字
#  (4)、要求输出格式为:
#  姓名，xxxx年-xx月，xx岁，是（否）含有”小“，名字长度为:x。
import datetime, re

#  (1)、输入学生的姓名和出生年月。
input_str = input("输入学生的姓名(5个字符以内)和出生年月:（格式：张三,2020-09-03）")


def is_Chinese(word):
    for ch in word:
        if '\u4e00' <= ch <= '\u9fff':
            return True
    return False


def getAge(birthday_str: str):
    today = datetime.datetime.today()
    age = today.year - int(birthday_str[:4])
    return max(today.month >= int(birthday_str[5:7]) and today.day >= int(birthday_str[-2:]) and age or age - 1, 0)


try:
    name, birthday = input_str.split(',')[0], input_str.split(',')[1]
    if len(name) not in range(2, 5 + 1) or not is_Chinese(name):
        print("请检查输入的名字")
        exit(-1)
    birthday = re.search(r'(\d{4}-\d{1,2}-\d{1,2})', birthday).group(0)
    print(f"{name}，{birthday[:4]}年-{birthday[5:7]}月，{getAge(birthday)}岁，"
          f"{name.__contains__('小') and '是' or '否'}含有”小“，名字长度为:{len(name)}。")
except AttributeError:
    print("请检查日期格式")
    exit(-1)
except IndexError:
    print("请检查格式")
    exit(-1)

#  (2)、通过字符串函数，分别输出学生的:
#  姓、名、出生年、月份、及今年多少岁，名字长度。
"""
print(f"姓:{len(name)>3 and name[:2] or name[:1]}\n"
      f"名:{len(name)>3 and name[2:] or name[1:]}\n"
      f"出生年:{birthday[:4]}\n"
      f"月份:{birthday[5:7].strip('0')}\n"
      f"及今年多少岁:\n"
      f"名字长度:{len(name)}\n")
"""
